<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Symbol 创建对象属性</title>
</head>
<body>
<script>
    //向对象中添加方法 up down
    let game = {
        name: '俄罗斯方块',
        up: function () {
        },
        down: function () {
        }
    };

    //声明一个对象
    // let methods = {
    //     up: Symbol(),
    //     down: Symbol()
    // };

    // TODO 可以安全的给对象增加属性，因为 Symbol() 具有唯一性，不用担心给对象新增加的方法和旧属性冲突了
    // game[methods.up] = function(){
    //     console.log("我可以改变形状");
    // }

    // game[methods.down] = function(){
    //     console.log("我可以快速下降!!");
    // }

    // console.log(game);

    // 这种写法就很没必要
    //  [Symbol('say')]  增加 [] 是语法问题，Symbol()是一个变量，一个属性怎么可能是变量？？
    //  [Symbol()]这么写值就确定下来了。
    let youxi = {
        name: "狼人杀",
        [Symbol('say')]: function () {
            console.log("我可以发言")
        },
        [Symbol('zibao')]: function () {
            console.log('我可以自爆');
        }
    }

    console.log(youxi)


</script>
</body>
</html>